╬πδαΓδσφΦσ

╨αßε≥α ± ⌠αΘδα∞Φ
╩δα±±√ ∩ε≥εΩεΓ
╤≥αφΣα≡≥φ√σ ∩ε≥εΩΦ
╧ε≥εΩΦ Φ ⌠αΘδ√
╟α∩Φ±ⁿ Φ ≈≥σφΦσ ∩ε≥εΩεΓ
╟αΩ≡√ΓαφΦσ ∩ε≥εΩεΓ
╤ß≡ε± ß≤⌠σ≡εΓ
╧ε≥εΩΦ Γ ∩α∞ ≥Φ
Stream Tokenizer
String Tokenizer
╩δα±± File
╧≡εΦτΓεδⁿφ√Θ Σε±≥≤∩
╧≡ΦδεµσφΦσ StreamToken
╧≡ΦδεµσφΦσ DirectFile

    ╧≡ΦδεµσφΦσ DirectFile

    ─δ  Φδδ■±≥≡α÷ΦΦ ±∩ε±εßεΓ ≡αßε≥√ ± Ωδα±±ε∞ RandomAccessFile ∞√ ∩εΣπε≥εΓΦδΦ ∩≡ΦδεµσφΦσ DirectFile, Γ Ωε≥ε≡ε∞ ±ετΣασ≥±  φσßεδⁿ°α  ßατα Σαφφ√⌡. ▌≥α ßατα Σαφφ√⌡ ±ε±≥εΦ≥ Φτ ΣΓ≤⌡ ⌠αΘδεΓ: ⌠αΘδα Σαφφ√⌡ Φ ⌠αΘδα ΦφΣσΩ±α.

    ┬ ⌠αΘδσ Σαφφ√⌡ ⌡≡αφ ≥±  τα∩Φ±Φ, ±ε±ε≥ ∙Φσ Φτ ΣΓ≤⌡ ∩εδσΘ - ≥σΩ±≥εΓεπε Φ ≈Φ±δεΓεπε. ╥σΩ±≥εΓεσ ∩εδσ ± φατΓαφΦσ∞ name ⌡≡αφΦ≥ ±≥≡εΩΦ, ταΩ≡√≥√σ ±∞ΦΓεδα∞Φ Ωεφ÷α ±≥≡εΩΦ "\r\n", α ≈Φ±δεΓεσ ± φατΓαφΦσ∞ account - τφα≈σφΦ  ≥Φ∩α int.

    ┬ ∞σφ■ File φα°σπε ∩≡ΦδεµσφΦ  σ±≥ⁿ ±≥≡εΩΦ New Φ View records (≡Φ±. 5).

    pic05.gif (2516 bytes)

    ╨Φ±. 5. ╤≥≡εΩΦ ∞σφ■ File

    ╤ ∩ε∞ε∙ⁿ■ ±≥≡εΩΦ New Γ√ ∞εµσ≥σ ±ετΣα≥ⁿ ßατ≤ Σαφφ√⌡, ±ε±≥ε ∙≤■ Φτ ≥≡σ⌡ τα∩Φ±σΘ. ┼±δΦ Γ√ß≡α≥ⁿ Φτ ∞σφ■ File ±≥≡εΩ≤ View records, φα ²Ω≡αφσ ∩ε ΓΦ≥±  ΣΦαδεπεΓα  ∩αφσδⁿ ± ±εΣσ≡µΦ∞√∞ ²≥Φ⌡ τα∩Φ±σΘ (≡Φ±. 6).

    pic06.gif (2365 bytes)

    ╨Φ±. 6. ╤εΣσ≡µΦ∞εσ ≥≡σ⌡ ∩σ≡Γ√⌡ ∩εδσΘ ßατ√ Σαφφ√⌡

    ┬∞σ±≥ε ±Φ∞Γεδα ∩σ≡σΓεΣα ±≥≡εΩΦ Γ ΣΦαδεπεΓεΘ ∩αφσδΦ ε≥εß≡αµασ≥±  ∞αδσφⁿΩΦΘ ΩΓαΣ≡α≥ΦΩ.

    ─α∞∩ ±ετΣαΓασ∞επε ⌠αΘδα Σαφφ√⌡ ∩≡ΦΓσΣσφ φα ≡Φ±. 7.

    pic07.gif (1956 bytes)

    ╨Φ±. 7. ─α∞∩ ⌠αΘδα Σαφφ√⌡

    ╚τ ²≥επε Σα∞∩α ΓΦΣφε, ≈≥ε ∩ε±δσ ∩σ≡Γεπε τα∩≤±Ωα ∩≡ΦδεµσφΦ  Γ ⌠αΘδσ Σαφφ√⌡ Φ∞σ■≥±  ±δσΣ≤■∙Φσ τα∩Φ±Φ:

    ═ε∞σ≡ τα∩Φ±Φ ╤∞σ∙σφΦσ Γ ⌠αΘδσ Σαφφ√⌡ ╧εδσ name ╧εδσ account
    0 0 Ivanov 1000
    1 12 Petrov 2000
    2 24 Sidoroff 3000

    ╧≡Φ ∩ε±δσΣ≤■∙Φ⌡ τα∩≤±Ωα⌡ ΩαµΣ√Θ ≡ατ Γ ⌠αΘδ Σαφφ√⌡ ß≤Σ≤≥ ΣεßαΓδ ≥ⁿ±  ∩≡ΦΓσΣσφφ√σ Γ√°σ τα∩Φ±Φ.

    ╥αΩ ΩαΩ ∩εδσ name Φ∞σσ≥ ∩σ≡σ∞σφφ≤■ ΣδΦφ≤, Σδ  εßσ±∩σ≈σφΦ  Γετ∞εµφε±≥Φ ∩≡ ∞επε Σε±≥≤∩α Ω τα∩Φ±Φ ∩ε σσ φε∞σ≡≤ φσεß⌡εΣΦ∞ε πΣσ-≥ε ⌡≡αφΦ≥ⁿ ±∞σ∙σφΦ  Γ±σ⌡ τα∩Φ±σΘ. ╠√ ²≥ε Σσδασ∞ Γ ⌠αΘδσ ΦφΣσΩ±εΓ, Σα∞∩ Ωε≥ε≡επε ∩≡σΣ±≥αΓδσφ φα ≡Φ±. 8.

    pic08.gif (1575 bytes)

    ╨Φ±. 8. ─α∞∩ ⌠αΘδα ΦφΣσΩ±α

    ╘αΘδ ΦφΣσΩ±εΓ ⌡≡αφΦ≥ 8-ßαΘ≥εΓ√σ ±∞σ∙σφΦ  τα∩Φ±σΘ ⌠αΘδα Σαφφ√⌡ Γ ⌠ε≡∞α≥σ long. ╟φα  φε∞σ≡ τα∩Φ±Φ, ∞εµφε≡ δσπΩε Γ√≈Φ±δΦ≥ⁿ ±∞σ∙σφΦσ Γ ⌠αΘδσ ΦφΣσΩ±εΓ, ∩ε Ωε≥ε≡ε∞≤ ⌡≡αφΦ≥±  ±∞σ∙σφΦσ φ≤µφεΘ τα∩Φ±Φ Γ ⌠αΘδσ Σαφφ√⌡. ┼±δΦ ΦτΓδσ≈ⁿ ²≥ε ±∞σ∙σφΦσ, ≥ε ∞εµφε Γ√∩εδφΦ≥ⁿ ∩ετΦ÷ΦεφΦ≡εΓαφΦσ Γ ⌠αΘδσ Σαφφ√⌡ ± ÷σδⁿ■ ≈≥σφΦ  φ≤µφεΘ τα∩Φ±Φ, ≈≥ε Φ Σσδασ≥ φα°σ ∩≡ΦδεµσφΦσ.

    ╚±⌡εΣφ√Θ ≥σΩ±≥ ∩≡ΦδεµσφΦ  DirectFile

    ╚±⌡εΣφ√Θ ≥σΩ±≥ ∩≡ΦδεµσφΦ  DirectFile ∩≡σΣ±≥αΓδσφ Γ δΦ±≥Φφπσ 2.

    ╦Φ±≥Φφπ 2. ╘αΘδ DirectFile.java

    import java.awt.*;
    import java.io.*;
    import java.util.*;
    public class DirectFile
    {
      public static void main(String args[])
      {
        MainFrameWnd frame = 
          new MainFrameWnd("MenuApp");
        frame.setSize(
        frame.getInsets().left + 
          frame.getInsets().right  + 320,
          frame.getInsets().top  + 
          frame.getInsets().bottom + 240);
        frame.show();
      }
    }
    class MainFrameWnd extends Frame
    {
      MenuBar mbMainMenuBar;
      Menu mnFile;
      Menu mnHelp;
      boolean fDBEmpty = true;
      public MainFrameWnd(String sTitle)
      {
        super(sTitle);
        setSize(400, 200);
        setBackground(Color.yellow);
        setForeground(Color.black);
        setLayout(new FlowLayout());
        mbMainMenuBar = new MenuBar();
        mnFile = new Menu("File");
        mnFile.add("New...");
        mnFile.add("View records...");
        mnFile.add("-");
        mnFile.add("Exit");
        mnHelp = new Menu("Help"); 
        mnHelp.add("Content");
        mnHelp.add("-");
        mnHelp.add("About");
        mbMainMenuBar.add(mnFile);
        mbMainMenuBar.add(mnHelp);
        setMenuBar(mbMainMenuBar);
      }
      public void paint(Graphics g)
      {
        g.setFont(new Font("Helvetica", 
          Font.PLAIN, 12));
        g.drawString("Frame window", 10, 70);
        super.paint(g);
      }
      public boolean handleEvent(Event evt)
      {
        if(evt.id == Event.WINDOW_DESTROY)
        {
          setVisible(false);
          System.exit(0);
          return true;
        }
        else
          return super.handleEvent(evt);
      }
      public boolean action(Event evt,
       Object obj)
      {
        MenuItem mnItem;
        if(evt.target instanceof MenuItem)
        {
          mnItem = (MenuItem)evt.target;
          if(obj.equals("Exit"))
          {
            System.exit(0);
          }
          else if(obj.equals("New..."))
          {
    	if(fDBEmpty)
     	{
    	  SimpleDBMS db = new SimpleDBMS(
    	    "dbtest.idx", "dbtest.dat");
              db.AddRecord("Ivanov",   1000);
              db.AddRecord("Petrov",   2000);
    	  db.AddRecord("Sidoroff", 3000);
              db.close();
    	  fDBEmpty = false;
              MessageBox mbox;
              mbox = new MessageBox(
                "Database created",
                this, "Information", true);
    	  mbox.show();
    	}
          }
          else if(obj.equals("View records..."))
          {
            SimpleDBMS db = new SimpleDBMS(
    	  "dbtest.idx", "dbtest.dat");
            String szRecords;
    	
    	szRecords = 
              db.GetRecordByNumber(0) +
    	  db.GetRecordByNumber(1) +
    	  db.GetRecordByNumber(2);
    	
            db.close();
    	
            MessageBox mbox;
            mbox = new MessageBox(szRecords,
              this, "Database records", true);
    	mbox.show();
          }
          
          else if(obj.equals("Content"))
          {
            MessageBox mbox;
            mbox = new MessageBox(
              "Item Content selected",
              this, "Dialog from Frame", true);
            mbox.show();
          }
          
          else if(obj.equals("About"))
          {
            MessageBox mbox;
            mbox = new MessageBox(
              "Item About selected",
              this, "Dialog from Frame", true);
            mbox.show();
          }
          else
            return false;
          return true;
        }
        return false;
      }
    }
    class MessageBox extends Dialog
    {
      Label lbMsg;
      Button btnOK;
      public MessageBox(String sMsg, 
        Frame  parent, String  sTitle,
        boolean  modal)
      {
        super(parent, sTitle, modal);
        resize(300, 100);
        setLayout(new GridLayout(2, 1));
        lbMsg = new Label(sMsg, Label.CENTER);
        add(lbMsg);
        btnOK = new Button("OK");
        add(btnOK);
      }
      public boolean handleEvent(Event evt)
      {
        if(evt.id == Event.WINDOW_DESTROY)
        {
          dispose();
          return true;
        }
        else
          return super.handleEvent(evt);
      }
      public boolean action(Event evt,
       Object obj)
      {
        Button btn;
        if(evt.target instanceof Button)
        {
          btn = (Button)evt.target;
          if(evt.target.equals(btnOK))
          {
            dispose();
          }
          else
            return false;
          return true;
        }
        return false;
      }
    }
    class SimpleDBMS
    {
      RandomAccessFile idx;
      RandomAccessFile dat;
      long idxFilePointer = 0;
      public SimpleDBMS(String IndexFile,
       String DataFile)
      {
        try
        {
          idx = new RandomAccessFile(
            IndexFile, "rw");
          dat = new RandomAccessFile(
            DataFile, "rw");
        }
        catch(Exception ioe)
        {
          System.out.println(ioe.toString());
        }
      }
      public void close()
      {
        try
        {
          idx.close();
          dat.close();
        }
        catch(Exception ioe)
        {
          System.out.println(ioe.toString());
        }
      }
      public void AddRecord(String name,
         int account)
      {
        try
        {
          idx.seek(idx.length());
          dat.seek(dat.length());
          idxFilePointer = dat.getFilePointer();
          idx.writeLong(idxFilePointer);
          dat.writeBytes(name+ "\r\n");
          dat.writeInt(account);
        }
        catch(Exception ioe)
        {
          System.out.println(ioe.toString());
        }
      }
      public String GetRecordByNumber(long nRec)
      {
        String sRecord = "<empty>";
     
        try
        {
          Integer account;
          String str = null;
          idx.seek(nRec * 8);
          idxFilePointer = idx.readLong();
          dat.seek(idxFilePointer);
          str = dat.readLine();
          account = new Integer(dat.readInt());
          sRecord = new String("> " +
           account + ", " + str);
        }
        catch(Exception ioe)
        {
          System.out.println(ioe.toString());
        }
        return sRecord;
      }
    }

    ╬∩Φ±αφΦσ Φ±⌡εΣφεπε ≥σΩ±≥α ∩≡ΦδεµσφΦ  DirectFile

    ─δ  ≡αßε≥√ ± ßατεΘ Σαφφ√⌡ ∞√ ±ετΣαδΦ Ωδα±± SimpleDBMS, ε∩≡σΣσδΦΓ Γ φσ∞ Ωεφ±≥≡≤Ω≥ε≡, ∞σ≥εΣ√ Σδ  ΣεßαΓδσφΦ  τα∩Φ±σΘ, ΦτΓδσ≈σφΦ  τα∩Φ±σΘ ∩ε Φ⌡ ∩ε≡ ΣΩεΓε∞≤ φε∞σ≡≤, α ≥αΩµσ ∞σ≥εΣ Σδ  ταΩ≡√≥Φ  ßατ√ Σαφφ√⌡.

    ╤ετΣαφΦσ ßατ√ Σαφφ√⌡

    ╩επΣα ∩εδⁿτεΓα≥σδⁿ Γ√ßΦ≡ασ≥ Φτ ∞σφ■ File ±≥≡εΩ≤ New, ±εε≥Γσ≥±≥Γ≤■∙ΦΘ εß≡αßε≥≈ΦΩ ±εß√≥Φ  ±ετΣασ≥ ßατ≤ Σαφφ√⌡, ∩σ≡σΣαΓα  Ωεφ±≥≡≤Ω≥ε≡≤ Φ∞σφα ⌠αΘδα ΦφΣσΩ±α dbtest.idx Φ ⌠αΘδα Σαφφ√⌡ dbtest.dat:

    SimpleDBMS db = new SimpleDBMS(
      "dbtest.idx", "dbtest.dat");

    ╧ε±δσ ²≥επε ± ∩ε∞ε∙ⁿ■ ∞σ≥εΣα AddRecord, ε∩≡σΣσδσφφεπε Γ Ωδα±±σ SimpleDBMS, Γ ßατ≤ ΣεßαΓδ ■≥±  ≥≡Φ τα∩Φ±Φ, ±ε±≥ε ∙Φσ Φτ ≥σΩ±≥εΓεπε Φ ≈Φ±δεΓεπε ∩εδσΘ:

    db.AddRecord("Ivanov",   1000);
    db.AddRecord("Petrov",   2000);
    db.AddRecord("Sidoroff", 3000);

    ╧ε±δσ ταΓσ≡°σφΦ  ≡αßε≥√ ± ßατεΘ Σαφφ√⌡ εφα ταΩ≡√Γασ≥±  ∞σ≥εΣε∞ close Φτ Ωδα±±α SimpleDBMS:

    db.close();

    ╧≡ε±∞ε≥≡ τα∩Φ±σΘ ßατ√ Σαφφ√⌡

    ╧≡Φ Γ√ßε≡σ ±≥≡εΩΦ View records Φτ ∞σφ■ File ∩≡ΦδεµσφΦσ ε≥Ω≡√Γασ≥ ⌠αΘδ ßατ√ Σαφφ√⌡:

    SimpleDBMS db = new SimpleDBMS(
      "dbtest.idx", "dbtest.dat");

    ╟α≥σ∞ εφε ΦτΓδσΩασ≥ ≥≡Φ τα∩Φ±Φ ± φε∞σ≡α∞Φ 0, 1 Φ 2, Γ√τ√Γα  Σδ  ²≥επε ∞σ≥εΣ GetRecordByNumber, ≥αΩµσ ε∩≡σΣσδσφφ√Θ Γ Ωδα±±σ SimpleDBMS:

    String szRecords;
    
    szRecords = db.GetRecordByNumber(0) +
      db.GetRecordByNumber(1) +
      db.GetRecordByNumber(2);

    ╟α∩Φ±Φ εß·σΣΦφ ■≥±  Φ ±ε⌡≡αφ ■≥±  Γ ∩σ≡σ∞σφφεΘ szRecords ≥Φ∩α String. ╧ε±δσ ²≥επε ßατα Σαφφ√⌡ ταΩ≡√Γασ≥± :

    db.close();

    ─δ  ε≥εß≡αµσφΦ  ±εΣσ≡µΦ∞επε τα∩Φ±σΘ ∞√ ±ετΣασ∞ ΣΦαδεπεΓ≤■ ∩αφσδⁿ φα ßατσ ε∩≡σΣσδσφφεπε φα∞Φ Ωδα±±α MessageBox:

    MessageBox mbox;
    mbox = new MessageBox(szRecords,
      this, "Database records", true);
    mbox.show();

    ╩δα±± SimpleDBMS

    ╨α±±∞ε≥≡Φ∞ ≥σ∩σ≡ⁿ Ωδα±± SimpleDBMS.

    ┬ ²≥ε∞ Ωδα±±σ ε∩≡σΣσδσφε ≥≡Φ ∩εδ  ± Φ∞σφα∞Φ idx, dat Φ idxFilePointer, α ≥αΩµσ ≥≡Φ ∞σ≥εΣα.

    ╧εδ  Ωδα±±α SimpleDBMS

    ╧εδ  idx Φ dat  Γδ ■≥±  εß·σΩ≥α∞Φ Ωδα±±α RandomAccessFile Φ ∩≡σΣ±≥αΓδ ■≥ ±εßεΘ, ±εε≥Γσ≥±≥Γσφφε, ±±√δΩΦ φα ⌠αΘδ ΦφΣσΩ±α Φ ⌠αΘδ Σαφφ√⌡. ╧εδσ idxFilePointer ≥Φ∩α long Φ±∩εδⁿτ≤σ≥±  ΩαΩ ≡αßε≈σσ Φ ⌡≡αφΦ≥ ≥σΩ≤∙σσ ±∞σ∙σφΦσ Γ ⌠αΘδσ.

    ╩εφ±≥≡≤Ω≥ε≡ Ωδα±±α SimpleDBMS

    ╩εφ±≥≡≤Ω≥ε≡ Ωδα±±α SimpleDBMS Γ√πδ ΣΦ≥ Σε±≥α≥ε≈φε ∩≡ε±≥ε. ┬±σ, ≈≥ε εφ Σσδασ≥, - ²≥ε ±ετΣασ≥ ΣΓα εß·σΩ≥α Ωδα±±α RandomAccessFile, ±εε≥Γσ≥±≥Γσφφε, Σδ  ΦφΣσΩ±α Φ Σαφφ√⌡:

    idx = new RandomAccessFile(IndexFile, "rw");
    dat = new RandomAccessFile(DataFile, "rw");

    ╥αΩ ΩαΩ Γ Ωα≈σ±≥Γσ Γ≥ε≡επε ∩α≡α∞σ≥≡α Ωεφ±≥≡≤Ω≥ε≡≤ Ωδα±α RandomAccessFile ∩σ≡σΣασ≥±  ±≥≡εΩα "rw", ⌠αΘδ√ ε≥Ω≡√Γα■≥±  Φ Σδ  ≈≥σφΦ , Φ Σδ  τα∩Φ±Φ.

    ╠σ≥εΣ close

    ╠σ≥εΣ close ταΩ≡√Γασ≥ ⌠αΘδ√ ΦφΣσΩ±α Φ Σαφφ√⌡, Γ√τ√Γα  ∞σ≥εΣ close Φτ Ωδα±±α RandomAccessFile:

    idx.close();
    dat.close();

    ╠σ≥εΣ AddRecord

    ╠σ≥εΣ AddRecord ΣεßαΓδ σ≥ φεΓ≤■ τα∩Φ±ⁿ Γ Ωεφσ÷ ⌠αΘδα Σαφφ√⌡, α ±∞σ∙σφΦσ ²≥εΘ τα∩Φ±Φ - Γ Ωεφσ÷ ⌠αΘδα ΦφΣσΩ±α. ╧ε²≥ε∞≤ ∩σ≡σΣ φα≈αδε∞ ±ΓεσΘ ≡αßε≥√ ≥σΩ≤∙α  ∩ετΦ÷Φ  εßεΦ⌡ ≤Ωαταφφ√⌡ ⌠αΘδεΓ ≤±≥αφαΓδΦΓασ≥±  φα Ωεφσ÷ ⌠αΘδα.

    ─δ  ≤±≥αφεΓΩΦ ∞√ ∩≡Φ∞σφΦδΦ ∞σ≥εΣ seek Φτ Ωδα±±α RandomAccessFile, ∩σ≡σΣαΓ σ∞≤ Γ Ωα≈σ±≥Γσ ∩α≡α∞σ≥≡α τφα≈σφΦσ ΣδΦφ√ ⌠αΘδα Γ ßαΘ≥α⌡, ε∩≡σΣσδσφφεσ ∩≡Φ ∩ε∞ε∙Φ ∞σ≥εΣα length Φτ ≥επε µσ Ωδα±±α:

    idx.seek(idx.length());
    dat.seek(dat.length());

    ╧σ≡σΣ ≥σ∞ ΩαΩ ΣεßαΓδ ≥ⁿ φεΓ≤■ τα∩Φ±ⁿ Γ ⌠αΘδ Σαφφ√⌡, ∞σ≥εΣ AddRecord ε∩≡σΣσδ σ≥ ≥σΩ≤∙≤■ ∩ετΦ÷Φ■ Γ ⌠αΘδσ Σαφφ√⌡ (Γ Σαφφε∞ ±δ≤≈ασ ²≥ε ∩ετΦ÷Φ  Ωεφ÷α ⌠αΘδα) Φ τα∩Φ±√Γασ≥ ²≥≤ ∩ετΦ÷Φ■ Γ ⌠αΘδ ΦφΣσΩ±α:

    idxFilePointer = dat.getFilePointer();
    idx.writeLong(idxFilePointer);

    ─αδσσ ∞σ≥εΣ AddRecord Γ√∩εδφ σ≥ ±ε⌡≡αφσφΦσ ∩εδσΘ τα∩Φ±Φ Γ ⌠αΘδσ Σαφφ√⌡. ─δ  τα∩Φ±Φ ±≥≡εΩΦ Γ√τ√Γασ≥±  ∞σ≥εΣ writeBytes, α Σδ  τα∩Φ±Φ ≈Φ±δσφφεπε τφα≈σφΦ  ≥Φ∩α int - ∞σ≥εΣ writeInt:

    dat.writeBytes(name + "\r\n");
    dat.writeInt(account);

    ╬ß≡α≥Φ≥σ ΓφΦ∞σφΦσ, ≈≥ε Ω ±≥≡εΩσ ∞√ ΣεßαΓδ σ∞ ±Φ∞Γεδ√ ΓετΓ≡α≥α Ωα≡σ≥ΩΦ Φ ∩σ≡σΓεΣα ±≥≡εΩΦ. ▌≥ε ±Σσδαφε Φ±Ωδ■≈Φ≥σδⁿφε Σδ  ≥επε ≈≥εß√ εßετφα≈Φ≥ⁿ Ωεφσ÷ ±≥≡εΩΦ ≥σΩ±≥εΓεπε ∩εδ .

    ╠σ≥εΣ GetRecordByNumber

    ╠σ≥εΣ GetRecordByNumber ∩ετΓεδ σ≥ ΦτΓδσ≈ⁿ ∩≡εΦτΓεδⁿφ≤■ τα∩Φ±ⁿ Φτ ⌠αΘδα Σαφφ√⌡ ∩ε σσ ∩ε≡ ΣΩεΓε∞≤ φε∞σ≡≤.

    ═α∩ε∞φΦ∞, ≈≥ε ±∞σ∙σφΦ  Γ±σ⌡ τα∩Φ±σΘ ⌡≡αφ ≥±  Γ ⌠αΘδσ ΦφΣσΩ±εΓ Φ Φ∞σ■≥ εΣΦφαΩεΓ≤■ ΣδΦφ≤ 8 ßαΘ≥. ╧εδⁿτ≤ ±ⁿ ²≥Φ∞, ∞σ≥εΣ GetRecordByNumber Γ√≈Φ±δ σ≥ ±∞σ∙σφΦσ Γ ⌠αΘδσ ΦφΣσΩ±α ∩≡ε±≥√∞ ≤∞φεµσφΦσ∞ ∩ε≡ ΣΩεΓεπε φε∞σ≡α τα∩Φ±Φ φα ΣδΦφ≤ ∩σ≡σ∞σφφεΘ ≥Φ∩α long, ≥ε σ±≥ⁿ φα 8 ßαΘ≥, α τα≥σ∞ Γ√∩εδφ σ≥ ∩ετΦ÷ΦεφΦ≡εΓαφΦσ:

    idx.seek(nRec * 8);

    ╧ε±δσ ²≥επε ∞σ≥εΣ GetRecordByNumber ΦτΓδσΩασ≥ Φτ ⌠αΘδα ΦφΣσΩ±εΓ ±∞σ∙σφΦσ φ≤µφεΘ τα∩Φ±Φ Γ ⌠αΘδσ Σαφφ√⌡, Γ√τ√Γα  Σδ  ²≥επε ∞σ≥εΣ readLong, α τα≥σ∞ Γ√∩εδφ σ≥ ∩ετΦ÷ΦεφΦ≡εΓαφΦσ Γ ⌠αΘδσ Σαφφ√⌡:

    idxFilePointer = idx.readLong();
    dat.seek(idxFilePointer);

    ╧εδ  τα∩Φ±Φ ≈Φ≥α■≥±  Φτ ⌠αΘδα Σαφφ√⌡ Γ ΣΓα ∩≡Φσ∞α. ┬φα≈αδσ ≈Φ≥ασ≥±  ±≥≡εΩα ≥σΩ±≥εΓεπε ∩εδ , α τα≥σ∞ - ≈Φ±δσφφεσ τφα≈σφΦσ, Σδ  ≈σπε Γ√τ√Γα■≥± , ±εε≥Γσ≥±≥Γσφφε, ∞σ≥εΣ√ readLine Φ readInt:

    str = dat.readLine();
    account = new Integer(dat.readInt());

    ╧εδ≤≈σφφ√σ τφα≈σφΦ  ∩εδσΘ εß·σΣΦφ ■≥±  Γ ≥σΩ±≥εΓεΘ ±≥≡εΩσ Φ τα∩Φ±√Γα■≥±  Γ ∩σ≡σ∞σφφ≤■ sRecord:

    sRecord = new String("> " + 
      account + ", " + str);

    ╤εΣσ≡µΦ∞εσ ²≥εΘ ∩σ≡σ∞σφφεΘ ∞σ≥εΣ GetRecordByNumber ΓετΓ≡α∙ασ≥ Γ Ωα≈σ±≥Γσ ΦτΓδσ≈σφφεΘ ±≥≡εΩΦ τα∩Φ±Φ ßατ√ Σαφφ√⌡.



Java | ╧≡εΣ≤Ω≥√ Φ ≡σ°σφΦ  | ╥σ⌡φεδεπΦΦ | ╤σ≡ΓΦ± Φ εß≤≈σφΦσ
╬ Ωε∞∩αφΦΦ | ╧α≡≥φσ≡√ | ═εΓε±≥Φ | ╧εΦ±Ω
Sun Microsystems Inc. Corporate Information Our partners News and Events Search on site Java Computing Products and Solutions Technologies and Researches Education and Service Content